/*
 *	$Id$
 *	Progress interface
 *
 *	This file is part of OTAWA
 *	Copyright (c) 2010, IRIT UPS.
 *
 *	OTAWA is free software; you can redistribute it and/or modify
 *	it under the terms of the GNU General Public License as published by
 *	the Free Software Foundation; either version 2 of the License, or
 *	(at your option) any later version.
 *
 *	OTAWA is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *	GNU General Public License for more details.
 *
 *	You should have received a copy of the GNU General Public License
 *	along with OTAWA; if not, write to the Free Software
 *	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
#ifndef OTAWA_PROC_PROGRESS_H_
#define OTAWA_PROC_PROGRESS_H_

#include <elm/string.h>

namespace otawa {

// External class
class Processor;

// Progress class
class Progress {
public:
	typedef enum {
		none,
		living,
		linear,
		fixpoint
	} mode_t;

	static Progress& null;

	virtual void start(const Processor& processor, mode_t mode, int max = 0) = 0;
	virtual void stop(void) = 0;
	virtual void report(string info, int level) = 0;
	virtual void restart(string info) = 0;
};

}	// otawa

#endif /* OTAWA_PROC_PROGRESS_H_ */
